// 导入处理路径的 path 核心模块
const path = require('path')

// 导入数据库操作模块
const db = require('../db/index')

const fs = require("fs");
// 发布新文章的处理函数
exports.addArticle = (req, res) => {
    // 手动判断是否上传了文章封面 参数名cover_img
    if (!req.file || req.file.fieldname !== 'cover_img') return res.cc('文章封面是必选参数！')

    // TODO：表单数据合法，继续后面的处理流程...
    const articleInfo = {
        // 标题、内容、状态、所属的分类Id
        ...req.body,
        // 文章封面在服务器端的存放路径
        cover_img: path.join('/uploads', req.file.filename),
        // 文章发布时间
        pub_date: new Date(),
        // 文章作者的Id
        author_id: req.user.id,
    }
    // 定义发布文章的 SQL 语句
    const sql = `insert into ev_articles set ?`
    // 执行 SQL 语句
    db.query(sql, articleInfo, (err, results) => {
        // 执行 SQL 语句失败
        if (err) return res.cc(err)

        // 执行 SQL 语句成功，但是影响行数不等于 1
        if (results.affectedRows !== 1) return res.cc('发布文章失败！')

        // 发布文章成功
        res.cc('发布文章成功', 0)
    })
}

exports.downloadArticle = (req, res) => {
  const filePath = path.join(
    __dirname,
    "../uploads",
    "/文件路径"
  );
  fs.readFile(filePath, (isErr, data) => {
    if (isErr) {
      console.log(isErr.message);
      res.end("Read file failed!");
      return;
    }
    res.writeHead(200, {
      "Content-Type": "application/octet-stream", //告诉浏览器这是一个二进制文件
      "Content-Disposition":
        "attachment; filename=" + encodeURI("文件名.png"), //告诉浏览器这是一个需要下载的文件
    });
    res.end(data);
  });
};